package com.bot.nft.module.op.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bot.nft.module.op.domain.OpRofoInfo;
import com.bot.nft.module.op.domain.bo.OpRofoInfoBo;
import com.bot.nft.module.op.domain.bo.OpRofoQueryBo;
import com.bot.nft.module.op.domain.vo.OpRofoExeLogVo;
import com.bot.nft.module.op.domain.vo.OpRofoInfoVo;
import com.bot.nft.module.op.domain.vo.OpRofoListVo;
import com.bot.nft.module.op.domain.vo.OpRofoOpListVo;

import java.util.List;

/**
 * 描述：优先购活动业务接口，包含新增，查询，修改等核心业务功能 <br>
 * 时间：2023-11-23 8:45 <br>
 * 负责人：王速
 */
public interface IRofoOpService {
    /**
     * 添加优先购活动信息
     *
     * @param opRofoInfoBo 优先购活动信息包含：优先购活动信息标识,任务名称,快照时间等属性
     * @return Boolean 成功/true，失败/false
     */
    Boolean addRofoOpInfo(OpRofoInfoBo opRofoInfoBo);

    /**
     * 编辑优先购活动信息
     *
     * @param opRofoInfoBo 优先购活动信息,包含：优先购活动信息标识,任务名称,快照时间等属性
     * @return Boolean 成功/true，失败/false
     */
    Boolean updateRofoOpInfo(OpRofoInfoBo opRofoInfoBo);

    /**
     * 查看优先购活动
     *
     * @param id 优先购活动标识
     * @return RofoInfoVo 优先购活动信息,包含：优先购活动信息标识,任务名称,快照时间等属性
     */
    OpRofoInfoVo getRofoOp(String id);

    /**
     * 删除优先购活动
     *
     * @param id 优先购活动标识
     * @return Boolean 成功/true，失败/false
     */
    Boolean delRofoOp(String id);

    /**
     * 查询优先购活动
     *  @param rofoQueryBo    请求参数
     * @param pageNo    当前页码
     * @param pageSize  每页条数
     * @return RofoListInfoVo* 包含：优先购活动信息标识,任务名称,快照时间等属性
     */
    Page<OpRofoInfoVo> queryRofoOpByPage(OpRofoQueryBo rofoQueryBo, Integer pageNo, Integer pageSize);

    /**
     * 查询优先购购买资格 (app端)
     * @return RofoListInfoVo* 包含：优先购活动信息标识,任务名称,快照时间等属性
     */
    Page<OpRofoListVo> queryRofoList(OpRofoQueryBo rofoQueryBo, Integer pageNo, Integer pageSize);
    /**
     * 启用优先购活动
     *
     * @param id 优先购活动标识
     * @return Boolean 成功/true，失败/false
     */
    Boolean enableRofoOp(String id);

    /**
     * 禁用优先购活动
     *
     * @param id 优先购活动标识
     * @return Boolean 成功/true，失败/false
     */
    Boolean disRofoOp(String id);

    /**
     * 执行优先购活动快照
     * @return   Boolean 成功/true，失败/false
     */
    Boolean exeRofoSnapshot(String id);

    /**
     * 查看执行日志
     */
    List<OpRofoExeLogVo> getExeLog(String rofoId);


    /**
     * 判断会员购买资格app端
     * @param nftId 优先购活动藏品标识
     * @param phone 会员手机号
     * @return Boolean 成功/true，失败/false
     */
    Boolean assessment(String nftId, String phone);


    /**
     * 查询优先购活动 (app端)
     *  @param rofoQueryBo    请求参数
     * @param pageNo    当前页码
     * @param pageSize  每页条数
     * @return RofoListInfoVo* 包含：优先购活动信息标识,任务名称,快照时间等属性
     */
    Page<OpRofoOpListVo> queryAppRofoPage(OpRofoQueryBo rofoQueryBo, Integer pageNo, Integer pageSize);


    /**
     * 判断是否启用并未快照的任务 (计时器任务)
     */
    List<OpRofoInfo>  exeSnapshotTask();



}
